// 将所有文章相关的请求封装到这个文件中，统一进行管理
import {request} from '../request';

/**
 * 分页并条件查询文章信息
 * @param query 查询条件封装的对象
 * @returns {返回Promise实例}
 */
export function getArticleByPage(query) {
  let {currentPage, pageSize, keyword, cid} = query;
  return request({
    url: '/article/getArticleByPage',
    params: {
      currentPage, pageSize, keyword, cid
    }
  });
}

/**
 * 设置文章的展示状态，状态包括是否发布，是否允许评论和是否置顶
 * @param id 文章id
 * @param config 展示的配置状态
 * @returns {返回Promise实例}
 */
export function changeArticleStatus(id, config) {
  let {isRelease, canComment, upToTop} = config;
  return request({
    url: '/article/changeArticleStatus',
    params: {
      id, isRelease, canComment, upToTop
    }
  });
}

/**
 * 上一个方法的批量操作版本
 * @param ids 需要进行操作的文章id集合
 * @param config 展示的配置状态
 * @returns {返回Promise实例}
 */
export function changeMultiArticleStatus(ids, config) {
  let {isRelease, canComment, upToTop} = config;
  return request({
    url: '/article/changeMultiArticleStatus',
    params: {
      ids, isRelease, canComment, upToTop
    }
  });
}

/**
 * 保存文章
 * @param entity 文章实体
 * @returns {返回Promise实例}
 */
export function insertArticle(entity) {
  return request({
    method: "post",
    url: '/article/insertArticle',
    /*
    注意：如果使用data: {entity}这种方式的话，提交的数据会是entity: {......}
         而如果使用data: entity这种方式的话，提交的数据会是{......}，在这里如果只提交entity一个参数的话建议使用第二种方式来获取
     */
    // data: {
    //   entity
    // },
    data: entity
  });
}

/**
 * 修改文章
 * @param entity 文章实体
 * @returns {返回Promise实例}
 */
export function updateArticle(entity) {
  return request({
    method: "post",
    url: '/article/updateArticle',
    data: entity
  });
}

/**
 * 根据文章id加载文章的信息
 * @param id
 * @returns {返回Promise实例}
 */
export function getArticleById(id) {
  return request({
    url: '/article/getArticleById',
    params: {
      id
    }
  });
}

/**
 * markdown编辑器中的上传图片
 * @param formData 图片信息
 * @returns {返回Promise实例}
 */
export function uploadImageForMarkdown(formData) {
  return request({
    url: '/upload/uploadImage',
    method: 'post',
    data: formData,
    headers: {
      'Content-Type': 'multipart/form-data'
    },
  });
}

/**
 * 根据id删除文章
 * @param id
 * @returns {返回Promise实例}
 */
export function deleteByIds(ids) {
  return request({
    url: '/article/deleteByIds',
    params: {
      ids
    }
  });
}

/**
 * 获取模态框中的表格中的文章数据，它需要符合两个条件
 * 1.文章已经启用
 * 2.文章还没有被添加为轮播图
 * @param currentPage 当前页
 */
export function getArticleDataForSave(query) {
  let {currentPage, keyword} = query;
  return request({
    url: '/article/getArticleDataForSave',
    params: {
      currentPage, keyword
    }
  })
}
